import CryptoJS from "crypto-js";
const key = CryptoJS.enc.Utf8.parse("p6YI5NnzbYc4xxc4"); // 密钥
const iv = CryptoJS.enc.Utf8.parse("hWhrFDU3TUgYuCBt"); //偏移量
const mode = CryptoJS.mode.CBC;
const padding = CryptoJS.pad.Pkcs7;

const crypto = {
  /**
   * AES 加密方法
   * @param {*} decryptData 未加密的对象数据
   * @returns 加密数据
   */
  encryptAES(decryptData) {
    const content = JSON.stringify(decryptData);
    const content1 = CryptoJS.enc.Utf8.parse(content);
    const encrypted = CryptoJS.AES.encrypt(content1, key, {
      iv,
      mode,
      padding,
    });
    return CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
  },
  /**
   * AES 解密方法
   * @param {*} encryptData 加密数据
   * @returns 解密后数据
   */
  decryptAES(encryptData) {
    try {
      const ciphertext = CryptoJS.enc.Base64.parse(encryptData); // Base64解密
      const stringEncryptData = CryptoJS.format.Hex.parse(
        ciphertext.toString()
      );
      const decrypt = CryptoJS.AES.decrypt(stringEncryptData, key, {
        iv,
        mode,
        padding,
      });
      // 将解密后的结果转换为字符串，并解析为JSON对象
      const source = CryptoJS.enc.Utf8.stringify(decrypt);
      return JSON.parse(source);
    } catch (error) {
      console.error("解密失败:", error.message);
      return null; // 返回 null 或其他自定义的错误标识
    }
  },
};

export default crypto;
